package com.conference.service;

import com.conference.entity.Conference;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

public interface ConferenceService {
    Conference createConference(Conference conference);
    Conference updateConference(Conference conference);
    void deleteConference(Long id);
    Conference getConferenceById(Long id);
    Page<Conference> getAllConferences(Pageable pageable);
    String generateNotice(Conference conference);
    String generateQRCode(Conference conference);
    
    Page<Conference> searchConferences(
        String title,
        String location,
        Integer status,
        LocalDate startDate,
        LocalDate endDate,
        Pageable pageable
    );

    // 统计相关方法
    long getTotalConferences();
    long getPublishedConferences();
    long getUpcomingConferences();
    Map<String, Long> getConferenceStatusDistribution();
    List<Map<String, Object>> getVenueUsageStatistics();
    List<Map<String, Object>> getMonthlyConferenceCount();
} 